Міністерство освіти і науки, молоді та спорту України
Національний університет “Львівська політехніка”
Кафедра СКС
Курсовий проект
з предмету ” Системне програмування ”
на тему: "Розробка та реалізація компонент системного програмного забезпечення "
Львів 2012
Анотація
В даному курсовому проекті розроблено компілятор з СІ-подібної вхідної мови програмування . Оболонка компілятора розроблена в середовищі програмування Visual C++ і в опис проекту не входить. Сам компілятор написанний на мові С++, та поданий у пояснювальній записці, а також разом з оболонкою в електронному варіанті. В пояснювальній записці подано детальний опис мови, огляд існуючих методів розробки компіляторів, а також описано процес розробки програми компілятора на рівні блок-схем і тексту програми. До проекту додано результати тестування програми.
Зміст
Ст.
1. Завдання …………………………………………………………………………………….4
2. Вступ………………………………………………………………………………………....5
3. Способи побудови компіляторів…………………………………………………………...6
3.1. Загальна схема компілятора………………………………………………………6
3.2. Лексичний аналізатор……………………………………………………………..7
3.3. Синтаксичний аналізатор……………………………………………………...….7
4. Формальний опис вхідної мови……………………………………………………..……..8
5. Таблиця лексем………………………………………………………………........….....…..9
6. Опис тексту програми………………………………………………………………...……10
7. Результати тестування…………………………………………………………………......12
8. Висновки………………………………………………………………………………..…..15
9. Список використаної літератури……………………………………………………..…...16
Додаток1……………………………………………………………………………………..17
Додаток2……………………………………………………………………………………..37
Додаток3……………………………………………………………………………………..38
1. Завдання
Розробити компілятор з вхідної мови програмування короткий опис якої подано нижче (у відповідності з заданим варіантом) з виводом необхідної проміжної інформації на кожному кроці. Розробити інтерфейс користувача (інтегроване середовище програмування вхідною мовою).
Варіант № 14
Мова високого рівня є CІ-подібною та повинна підтримувати:
початок блоку {
кінець блоку }
оператор вводу SCAN
оператор виводу PRINT
умовний оператор IF THEN ELSE
оператор циклу WHILE(…)
процедури і функції PROCEDURE
- оператор присвоєння ::
арифметичні операції + , - , / , * , POW, MOD
операції порівняння = ,<> , < , > , <= , >=
логічні операції NOT, OR, AND
ключові слова великими буквами
ідентифікатори великими і малими буквами до 6-ти символів
коментар // …
робота з типами даних – INTEGER, CHAR, REAL, STRING
Вимоги до синтаксису мови, такі ж як у мові програмування С.
Робота програми-компілятора повинна складатись з двох етапів – лексичного та синтаксичного аналізу.
2. Вступ
Компілятори становлять істотну частину програмного забезпечення ЕОМ. Це пов’язано з тим, що мови високого рівня стали основним засобом розробки програм. Тільки дуже незначна частина програмного забезпечення, що вимагає особливої ефективності, програмується за допомогою ассемблерів, що на сьогоднішній день на стільки складно для людини (у сучасних процесорів дуже велика система команд та багато аспектів з їх застосування), що й таке програмування застосовується дуже рідко та із великою обережністю написання коду.
На сьогодні існує досить багато мов програмування. Нарівні з традиційними мовами, такими, як Фортран, широке поширення отримали так звані «універсальні мови» (Паскаль, С, Модула-2, Ада та інші), а також деякі спеціалізовані (наприклад, мова обробки облікових структур Лісп). Крім того, велике поширення отримали мови, пов’язані з вузькими предметними областями, такі, як вхідні мови пакетів прикладних програм.
Для деяких мов є досить багато реалізацій. Наприклад, реалізацій Паскаля, Модули-2 або С для ЕОМ типу IBM/PC на ринку десятки. З іншого боку, постійно зростаюча потреба в нових компіляторах пов’язана з бурхливим розвитком архіт...